perm filename TAPE.SAI[PIC,HE] blob sn#419570 filedate 1977-09-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "FOO"
C00004 00003	PROCEDURE TAPEOP(INTEGER CHNSTRING STR)
C00005 00004	INTEGER TCHN,C
C00006 ENDMK
C⊗;
BEGIN "FOO"

REQUIRE "<QUAM>BIGLIB.HDR" SOURCE!FILE;

DEFINE SPR="256",WPR=128;

PROCEDURE BUFCVT(INTEGER ARRAY A;INTEGER N);
BEGIN	INTEGER I,WD,B0,B1,B2,B3;
	POINTER PT;
	N←N-1;
	FOR I←0 STEP 1 UNTIL N DO
	 BEGIN	WD←A[I];
		PT←POINT(8,WD,-1);
		B0←ILDB(PT);B1←ILDB(PT);B2←ILDB(PT);B3←ILDB(PT);
		A[I]←(((((B1 LSH 8) LOR B0) LSH 10) LOR B3) LSH 8) LOR B2;
	 END;
END;
	
PROCEDURE OPTRRD(INTEGER TCHN;STRING FILE);
BEGIN
	INTEGER!ARRAY LBUF[0:WPR];
	INTEGER EOF,DCHN;
	DCHN←OPENFILE(FILE,"W");

	SETINPUT(TCHN,0,0,EOF);
	ARRYIN(TCHN,LBUF[0],17);
	ARRYIN(TCHN,LBUF[32],76);
!	BUFCVT(LBUF,128);
	ARRYOUT(DCHN,LBUF[0],128);
	
	WHILE NOT EOF DO
	 BEGIN
		ARRYIN(TCHN,LBUF[0],WPR);
!		BUFCVT(LBUF,WPR);
		ARRYOUT(DCHN,LBUF[0],WPR);
	 END;
	RELEASE(DCHN);
END;

PROCEDURE TAPEOP(INTEGER CHN;STRING STR);
BEGIN	INTEGER TC,TN,I;
	TC←LOP(STR);
	TN←INTSCAN(STR,0) MAX 1;
	FOR I←1 STEP 1 UNTIL TN DO MTAPE(CHN,TC);
	IF TC="B" THEN BEGIN MTAPE(CHN,"B");MTAPE(CHN,"A");END;
	MTAPE(CHN,0);
END;

INTEGER TCHN,C;
STRING STR;

TCHN←OPENFILE("MTA"&STRIN("MAG TAPE UNIT#")&":","R");
SDSTS(TCHN,GDSTS(TCHN,0) LOR '041000);

WHILE TRUE DO
BEGIN	STR←STRIN(">");
	C←LOP(STR);
	CASE C OF
	 BEGIN	["T"] TAPEOP(TCHN,STR);
		["R"] OPTRRD(TCHN,STR);
		['177] BEGIN END
	 END;
END;

END;